변수의 의미

변수의 생성과 할당

컴퓨터 프로그래밍에서는 변수를 “정보를 임시로 담고 있는 상자” 정도로 생각하면 좋을 것 같다. 변수를 만들어보기 위해 MATLAB Command Window에 아래와 같이 입력한 뒤 엔터를 쳐보자.


이렇게 하면 우리는 “a”라는 변수에 “1”이라는 정보를 메모리에 잠시 담아두도록 컴퓨터에 명령한 것이다. 여기서 “=” 기호를 쓴 것을 “같다”라고 생각하지 말고 “할당한다”고 생각하는 것이 더 좋을 것 같다1.


“할당한다”는 말을 조금 더 잘 이해하기 위해 아래의 예시를 생각해보자.

a = 1
a = 2

Command Window에서 위와 같이 차례대로 입력해주면 a는 1이었다가 2가 된다. 수학적으로 생각하면 ‘a가 1이라고 했는데 왜 또 갑자기 2라는 거야?’ 라고 생각할 수도 있지만 앞서 말했듯 a라는 변수는 그저 정보를 담는 그릇이라고 생각해야 한다. 중간에 변수에 새로운 값을 할당하면 새로운 정보를 담게 되는 것이다.

변수의 연산

변수 끼리는 연산을 수행할 수 있다. 정보를 합치거나 더하거나 하여 새로운 결과를 얻어낼 수 있다는 뜻이다. 대표적으로 숫자형(numeric) 변수 끼리는 더하거나 빼거나 하는 연산을 수행할 수 있다. 아래와 같은 예시를 생각해보자.

a = 1;
b = 2;
c = a + b

위 식을 이해해보자면 a라는 변수에 1이라는 정보를 담고, b라는 변수에는 2라는 정보를 담았다. 그 때, c에는 a가 담은 정보 값과 b라는 정보 값을 더한 결과물을 담으라는 것이다. 당연히 c는 3이 된다. (MATLAB Command Window에 입력해 이 결과가 맞는지 직접 확인해보자.)

그러면 또 다른 예시를 생각해보자.

a = 1;
b = 2;
c = a + b
a = 5;
c

이러면 세 번째 줄에서 c는 a, b가 더해져 3이 되었는데, 중간에 a가 5로 바뀌었기 때문에 c는 7이 될까? 정답은 ‘아니오’이다. MATLAB에서 스크립트는 순서대로 연산되고, 현재의 변화가 과거의 결과를 바꾸지 않는다. 우리는 c에 3이라는 정보를 이미 담았기 때문에 a가 중간에 5로 바뀌었더라도 c는 그대로 3이다.

변수의 개념 덕분에 컴퓨터 프로그래밍은 복잡한 논리 구조의 연산을 수행할 수 있게 된다. 이 부분이 단순한 계산기와 컴퓨터 프로그램이 차이를 보이는 점이라고 할 수 있다.

정보의 종류에 따른 변수 타입

앞선 설명에서는 변수를 “정보를 임시로 담고 있는 상자” 정도로 생각하면 좋다고 얘기했다. 그렇다면 “정보”란 어떤 것을 의미하는 것일까? 여기서 정보는 숫자일 수도 있고, 문자열일 수도 있고, 시간 정보일 수도 있다. MALTAB에서는 담게 되는 정보의 종류에 따라 변수의 타입을 구분해두었다. 아래는 대표적인 변수 타입이다.


오래 전에 개발된 컴퓨터 언어(가령 Fortran)에는 이처럼 다양한 변수 타입이 존재하지 않았지만 사용자들의 필요에 따라 변수 타입의 종류가 늘어나게 되었고, 프로그래밍 언어마다 다른 타입의 변수를 사용하고 있다. 그런데, 종류가 너무 많아 보인다고 겁먹을 필요는 없다. 우리는 우리가 필요한 타입의 변수들만 사용하면 되기 때문이다. 또, 새로운 타입의 변수를 쓸 일이 생기면 그때 그때 배우면 되는 것이다.

이 외에도 각각의 타입의 변수들은 각각의 규칙이 존재한다. 앞으로는 다양한 변수들에 대해 알아보고 이들이 가지는 연산 방법과 쓰임새에 대해 알아보도록 하자.

  1. 어떤 사람들은 “=” 기호가 잘못되었다고 생각하기도 하고 수학에서의 등호와 구분할 필요가 있다고 생각하기도 한다. 그래서 “할당한다”는 의미를 강조하기 위해 Andrew Ng은 판서에서 등호 대신에 “:=”를 사용한다. 또, R 언어에서는 등호 대신에 “<-“ 부호를 사용할 수도 있다. MATLAB에서는 무조건 등호만 사용한다.